﻿//Copyright (C) <2013>  <jonathan cleeve norton> All Rights Reserved 
//Contact jon.norton@fin-plus.co.uk website <http://www.fin-plus.co.uk/>
using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.ComponentModel;
using System.Dynamic;

namespace FinPlusInterfaces
{
    public interface IDPod : INotifyPropertyChanged
    {
        event PropertyChangedEventHandler PropertyColumn;

        bool TryGetMember(GetMemberBinder binder, out object result);

        bool TrySetMember(SetMemberBinder binder, object value);

        string ServiceKey();

        ConcurrentDictionary<string, BeanBase> GetBeans();

        IEnumerable<string> GetDynamicMemberNames();

        IPod ToPod();

        void SetValue(string name, object value, string user, DateTime timeStamp, int index = -1);

        void SetBean(IBean bean);

        object GetValue(string name);

        IBean GetBean(string name);

        DateTime GetTimeStamp(string name);

        string GetType(string name);

        bool TryGetObject(string name, out object value);

        bool HasObject(string name, object value);

        string ToString();
    }
}
